import sqlalchemy
from fastapi import FastAPI
import sqlalchemy
import models

db = sqlalchemy
app = FastAPI()

@app.get("api/backstage")
def check_msg():
    '''
    返回所有人员信息
    {}
    '''
    infos = db.query(models.PersonalInformation).all()
    return infos

@app.put("/api/backstage/change/{info_id}")
def update_personal_info(
    info_id: int, 
    update_data: models.PersonalInformation
    ):
    '''
    修改指定ID的人员信息
    '''
    info = db.query(models.PersonalInformation).filter(
        models.PersonalInformation.info_id == info_id
    ).first()
    
    try:
        # 获取更新数据字典，排除未设置的字段
        update_dict = update_data.dict(exclude_unset=True)
        
        # 更新字段
        for field, value in update_dict.items():
            setattr(info, field, value)
        
        db.commit()
        db.refresh(info)
        
        return info
    except Exception as e:
        db.rollback()
        return {"code":404,'error':e}



@app.delete("/api/backstage/delete/{info_id}")
def delete_personal_info(info_id: int):
    '''
    删除指定ID的人员信息
    
    参数:
    - info_id: 人员信息的唯一标识符
    
    返回:
    - 成功删除时返回确认消息
    - 如果找不到对应记录则返回404错误
    '''
    # 查询要删除的记录
    info = db.query(models.PersonalInformation).filter(
        models.PersonalInformation.info_id == info_id
    ).first()
    
    # 如果记录不存在，返回404错误
    try:
        # 删除记录
        db.delete(info)
        db.commit()
        return {'code':200 ,"message": f"成功删除人员信息 (ID: {info_id})"}
    except Exception as e:
        # 如果发生错误，回滚事务并返回错误信息
        db.rollback()
        return {"code":404,'error':e}
